package com.deco.logic.sys;

import com.deco.dao.delegate.sys.ICmsUserDao;
import com.deco.domain.vo.constants.EnumStatus;
import com.deco.domain.vo.sys.CmsUserVo;
import com.free.common.vo.PageResponseVo;
import com.free.common.vo.PageSearchVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Component;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Component
public class CmsUserLogic {
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    @Autowired
    ICmsUserDao cmsUserDao;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    @CacheEvict(value = "cacheUsers",allEntries = true)
    public CmsUserVo add(CmsUserVo user){
        user = cmsUserDao.add(user);
        return user;
    }

    @Cacheable(value = "cacheUsers")
    public CmsUserVo getById(Integer id){
        return cmsUserDao.get(id);
    }

    @CacheEvict(value = "cacheUsers",allEntries = true)
    public int update(CmsUserVo user){
        return cmsUserDao.update(user);
    }

    @CacheEvict(value = "cacheUsers",allEntries = true)
    public int delete(int key){
        return cmsUserDao.delete(key);
    }

    public CmsUserVo getCmsUser(String userName, String password){
        CmsUserVo cmsVo = new CmsUserVo();
        cmsVo.setUserName(userName);
        cmsVo.setPassword(password);
        cmsVo.setStatus(EnumStatus.AVILABLE.getKey());
        CmsUserVo cmsUser = cmsUserDao.selectOne(cmsVo);
        return cmsUser;
    }

    public PageResponseVo<CmsUserVo> selectPageInfoByCmsUser(PageSearchVo<CmsUserVo> condition){
        return cmsUserDao.selectPageInfoByCmsUser(condition.getConditionVo(), StringUtils.EMPTY,condition.getCurrentNo(), condition.getLength());
    }
    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
